import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

/* Layout */
import Layout from '@/layout/index.vue'
// 公共路由
const constantRoutes = [
  {
    path: '/redirect',
    component: Layout,
    hidden: true,
    children: [
      { path: '/redirect/:path(.*)', component: () => import('@/views/redirect') }
    ]
  },
  {
    path: "/",
    redirect: "/index",
    hidden: true,
    children: []
  },
  // 登录
  { path: '/login', component: () => import('@/views/login/index'), hidden: true },
  // 404
  { path: '/404', component: () => import('@/views/error/404'), hidden: true },
  // 401
  { path: '/401', component: () => import('@/views/error/401'), hidden: true },
  // 主页
  {
    path: '/index',
    component: Layout,
    hidden: true,
    children: [
      {
        path: '/index',
        component: () => import('@/views/index'),
        name: 'Index',
        meta: { name: '首页', icon: 'home' }
      }
    ]
  },
  {
    path: '/system/dict-data',
    component: Layout,
    hidden: true,
    permissions: ['system:dict:list'],
    children: [
      {
        path: 'index/:dictId(\\d+)',
        component: () => import('@/views/system/dict/data'),
        name: 'Data',
        meta: { title: '字典数据', activeMenu: '/system/dict' }
      }
    ]
  },

]
// 动态路由配置
const dynamicRoutes = [
  // // P1 解决方案管理 Solution
  // {
  //   path: "/solution",
  //   name: "Solution",
  //   meta: { name: "解决方案管理", icon: 'file' },
  //   component: Layout,
  //   children: [
  //     // -------------------- 厂商信息 --------------------
  //     {
  //       // 管理页
  //       path: "/manufacturerInfoMgr",
  //       name: "ManufacturerInfoMgr",
  //       meta: { name: "厂商信息管理" },
  //       component: () => import("../views/solution/ManufacturerInfoMgr")
  //     },
  //     {
  //       // 表单页
  //       path: "/manufacturerInfoForm",
  //       name: "ManufacturerInfoForm",
  //       hidden: true,
  //       meta: { name: "厂商信息管理" },
  //       component: () => import("../views/solution/ManufacturerInfoForm")
  //     },
  //     {
  //       // 详情页
  //       path: "/manufacturerInfoDetails",
  //       name: "ManufacturerInfoDetails",
  //       hidden: true,
  //       meta: { name: "厂商信息管理" },
  //       component: () => import("../views/solution/ManufacturerInfoDetails")
  //     },
  //     // -------------------- 产品信息 --------------------
  //     {
  //       // 管理页
  //       path: "/productInfoMgr",
  //       name: "ProductInfoMgr",
  //       meta: { name: "产品信息管理" },
  //       component: () => import("../views/solution/ProductInfoMgr")
  //     },
  //     {
  //       // 表单页
  //       path: "/productInfoForm",
  //       name: "ProductInfoForm",
  //       hidden: true,
  //       meta: { name: "产品信息管理" },
  //       component: () => import("../views/solution/ProductInfoForm")
  //     },
  //     {
  //       // 详情页
  //       path: "/productInfoDetails",
  //       name: "ProductInfoDetails",
  //       hidden: true,
  //       meta: { name: "产品信息管理" },
  //       component: () => import("../views/solution/ProductInfoDetails")
  //     },
  //     // -------------------- 解决方案 --------------------
  //     {
  //       // 管理页
  //       path: "/solutionMgr",
  //       name: "SolutionMgr",
  //       meta: { name: "解决方案管理" },
  //       component: () => import("../views/solution/SolutionMgr")
  //     },
  //     {
  //       // 表单页
  //       path: "/solutionForm",
  //       name: "SolutionForm",
  //       hidden: true,
  //       meta: { name: "解决方案管理" },
  //       component: () => import("../views/solution/SolutionForm")
  //     },
  //     {
  //       // 详情页
  //       path: "/solutionDetails",
  //       name: "SolutionDetails",
  //       hidden: true,
  //       meta: { name: "解决方案管理" },
  //       component: () => import("../views/solution/SolutionDetails")
  //     },
  //   ]
  // },
  // // P2 评测用例管理 Evaluation case
  // {
  //   path: "/case",
  //   name: "Case",
  //   meta: { name: "评测用例管理", icon: 'edit-outline' },
  //   component: Layout,
  //   children: [
  //     // -------------------- 评测用例 --------------------
  //     {
  //       // 管理页
  //       path: "/caseMgr",
  //       name: "CaseMgr",
  //       meta: { name: "评测用例管理" },
  //       component: () => import("../views/evaluationCase/CaseMgr.vue")
  //     },
  //     {
  //       // 表单页
  //       path: "/caseForm",
  //       name: "CaseForm",
  //       hidden: true,
  //       meta: { name: "评测用例管理" },
  //       component: () => import("../views/evaluationCase/CaseForm.vue")
  //     },
  //     {
  //       // 详情页
  //       path: "/caseDetails",
  //       name: "CaseDetails",
  //       hidden: true,
  //       meta: { name: "评测用例管理" },
  //       component: () => import("../views/evaluationCase/CaseDetails.vue")
  //     }
  //   ]
  // },
  // // P3 评测管理 Evaluation
  // {
  //   path: "/evaluation",
  //   name: "Evaluation",
  //   meta: { name: "评测管理", icon: 'calendar' },
  //   component: Layout,
  //   children: [
  //     // -------------------- 评测任务管理 --------------------
  //     {
  //       // -管理页
  //       path: "/taskMgr",
  //       name: "TaskMgr",
  //       meta: { name: "评测任务管理" },
  //       component: () => import("../views/evaluation/TaskMgr.vue")
  //     },
  //     {
  //       // 表单页
  //       path: "/taskForm",
  //       name: "TaskForm",
  //       hidden: true,
  //       meta: { name: "评测任务管理" },
  //       component: () => import("../views/evaluation/TaskForm.vue")
  //     },
  //     {
  //       // 详情页
  //       path: "/taskDetails",
  //       name: "TaskDetails",
  //       hidden: true,
  //       meta: { name: "评测任务管理" },
  //       component: () => import("../views/evaluation/TaskDetails.vue")
  //     },
  //     // -------------------- 评测结果管理 --------------------
  //     {
  //       // 管理页
  //       path: "/resultMgr",
  //       name: "ResultMgr",
  //       meta: { name: "评测结果管理" },
  //       component: () => import("../views/evaluation/ResultMgr.vue")
  //     },
  //     {
  //       // 表单页
  //       path: "/resultForm",
  //       name: "ResultForm",
  //       hidden: true,
  //       meta: { name: "评测任务管理" },
  //       component: () => import("../views/evaluation/ResultForm.vue")
  //     },
  //     {
  //       // 详情页
  //       path: "/resultDetails",
  //       name: "ResultDetails",
  //       hidden: true,
  //       meta: { name: "评测任务管理" },
  //       component: () => import("../views/evaluation/ResultDetails.vue")
  //     },
  //   ]
  // },
  // // P4 承接项目管理 Projects undertaken by the laboratory
  // {
  //   path: "/projects",
  //   name: "Projects",
  //   meta: { name: "承接项目管理", icon: 'user-circle' },
  //   component: Layout,
  //   children: [
  //     {
  //       path: "/registration",
  //       name: "Registration",
  //       meta: { name: "项目登记" },
  //       component: () => import("../views/projectsOfTheLaboratory/Registration")
  //     },
  //     {
  //       path: "/registrationForm",
  //       name: "RegistrationForm",
  //       hidden: true,
  //       meta: { name: "项目登记" },
  //       component: () => import("../views/projectsOfTheLaboratory/RegistrationForm")
  //     },
  //     {
  //       path: "/processMgr",
  //       name: "ProcessMgr",
  //       meta: { name: "项目过程管理" },
  //       component: () => import("../views/projectsOfTheLaboratory/ProcessMgr")
  //     },
  //     {
  //       path: "/processReporting",
  //       name: "ProcessReporting",
  //       meta: { name: "进度填报" },
  //       hidden: true,
  //       component: () => import("../views/projectsOfTheLaboratory/ProcessReporting")
  //     },
  //     {
  //       path: "/archive",
  //       name: "Achive",
  //       meta: { name: "项目归档" },
  //       component: () => import("../views/projectsOfTheLaboratory/Achive.vue")
  //     },
  //   ]
  // },
  // // P5 实验室工具管理 Laboratory tool
  // {
  //   path: "/tool",
  //   name: "Tool",
  //   meta: { name: "实验室工具管理", icon: 'list' },
  //   component: Layout,
  //   children: [
  //     {
  //       path: "/productMessage",
  //       name: "ProductMessage",
  //       meta: { name: "产品信息" },
  //       component: () => import("../views/laboratoryTool/ProductMessage")
  //     },
  //     {
  //       path: "/manageTool",
  //       name: "ManageTool",
  //       meta: { name: "工具管理" },
  //       component: () => import("../views/laboratoryTool/ManageTool")
  //     },
  //     {
  //       path: "/manageToolForm",
  //       name: "ManageToolForm",
  //       hidden: true,
  //       meta: { name: "工具管理" },
  //       component: () => import("../views/laboratoryTool/ManageToolForm")
  //     },
  //   ]
  // },
  // // P6 实验室底座管理 Laboratory base
  // {
  //   path: "/base",
  //   name: "Base",
  //   meta: { name: "实验室底座管理", icon: 'layers' },
  //   component: Layout,
  //   children: [
  //     {
  //       path: "/hardwareResource",
  //       name: "HardwareResource",
  //       meta: { name: "硬件资源管理" },
  //       component: () => import("../views/laboratoryBase/HardwareResource")
  //     },
  //   ]
  // },
  // // P7 系统管理 System
  // {
  //   path: "/setting",
  //   name: "Setting",
  //   meta: { name: "系统管理", icon: 'setup' },
  //   component: Layout,
  //   children: [
  //     {
  //       path: "/systemSetting",
  //       name: "SystemSetting",
  //       meta: { name: "系统设置" },
  //       component: () => import("../views/setting/SystemSetting")
  //     },
  //     {
  //       path: "/userManagement",
  //       name: "UserManagement",
  //       meta: { name: "用户管理", icon: 'user' },
  //       component: () => import("../views/setting/user/UserManagement")
  //     },
  //     {
  //       path: "/roleManagement",
  //       name: "RoleManagement",
  //       meta: { name: "角色管理", icon: 'person-management' },
  //       component: () => import("../views/setting/role/RoleManagement")
  //     },
  //     {
  //       path: "/dictionaryManagement",
  //       name: "DictionaryManagement",
  //       meta: { name: "字典管理", icon: 'notebook' },
  //       component: () => import("../views/setting/dict/DictionaryManagement")
  //     },
  //     {
  //       path: "/logManagement",
  //       name: "LogManagement",
  //       meta: { name: "日志管理", icon: 'edit' },
  //       component: () => import("../views/setting/LogManagement")
  //     }
  //   ]
  // },
]
const routerPush = Router.prototype.push;
Router.prototype.push = function push(location) {
  return routerPush.call(this, location).catch(error => error);
};
export default new Router({
  mode: 'hash',
  // mode: 'history',
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})
export {constantRoutes, dynamicRoutes}